Transposition and octaviation

An important feature is the existence of a special register normalshapemediumseriesnormalshapemediumseries\transpose the normal value of which is 0. If you say


normalshapemediumseries\transpose=3


all subsequent pitches specified by upper or lower case letters will be transposed 3 positions. If you set normalshapemediumseriesnormalshapemediumseries\transpose to 7 you may write your music one octave below its final pitch. Thus, you can define octaviation macros like


normalshapemediumseries\defnormalshapemediumseries\soqu# 1{ normalshapemediumseries\zq{ # 1} { normalshapemediumseries\transpose=7normalshapemediumseries\relax normalshapemediumseries\qu{ # 1} } }


to build quarter note octaves in a single call. Note that the octaviated note is coded within braces so that the transposition is only local.


Octaviation can also be performed in is another way, namely unsing special codes to transpose by multiples of 7 intervals. For example normalshapemediumseries\qu{ 'ab} is equivalent to normalshapemediumseries\qu{ hi} and normalshapemediumseries\qu{ `kl} is equivalent to normalshapemediumseries\qu{ de} . It should be emphasized here that the normalshapemediumseries' (acute accent) and the normalshapemediumseries` (grave accent) have cumulative effects, so that normalshapemediumseries\qu{ ''A'A} is equivalent to normalshapemediumseries\qu{ ah} and that the normalshapemediumseries\transpose parameter is only reset to its initial value (not necessarily zero) when changing staff or instrument (i.e. normalshapemediumseries|| or normalshapemediumseries&) or at normalshapemediumseries\ enotes. Since this may be confusing, it is useful to use the normalshapemediumseries! prefix to reset the normalshapemediumseries\transpose register explicitely to the value it had when entering normalshapemediumseries\notes2.8. Thus normalshapemediumseries\qu{ !a'a} always gives the note normalshapemediumseriesa and its upper octave normalshapemediumseriesh shifted by the value of normalshapemediumseries\transpose at the beginning of the current normalshapemediumseries\notes...normalshapemediumseries\enotes group (or normalshapemediumseries\Notes...normalshapemediumseries\enotes, etc.) whatever the number of previous grave and acute accents occurring inbetween.


The above processes indeed change the vertical position of the note heads and associated symbols (note stems, accents and beams) but they do not take care of the necessary changes of accidentals when transposing, i.e. the fact that an F$\sharp$ occurring with a zero signature should become a B$\natural$ when transposing from the tonality of C major to F major where the normal B is the B$\flat$. Since the intent of the composer is not obvious – he may want to shift a group of notes within the same tonality or conversely to transpose it in another tonality – this is not done automatically. Thus the normalshapemediumseriesnormalshapemediumseries\sh, normalshapemediumseriesnormalshapemediumseries\fl, normalshapemediumseriesnormalshapemediumseries\na, normalshapemediumseriesnormalshapemediumseries\dsh and normalshapemediumseriesnormalshapemediumseries\dfl symbols are not affected by a change of the normalshapemediumseriesnormalshapemediumseries\transpose register.


But the composer/typesetter may ask MusicTEX to do that work. In this case, he should code normalshapemediumseriesnormalshapemediumseries\Sh, normalshapemediumseriesnormalshapemediumseries\Fl, normalshapemediumseriesnormalshapemediumseries\Na, normalshapemediumseriesnormalshapemediumseries\dSh and normalshapemediumseriesnormalshapemediumseries\dFl (or normalshapemediumseriesnormalshapemediumseries\bigSh, normalshapemediumseriesnormalshapemediumseries\bigFl, normalshapemediumseriesnormalshapemediumseries\bigNa, normalshapemediumseriesnormalshapemediumseries\bigdSh and normalshapemediumseriesnormalshapemediumseries\bigdFl or normalshapemediumseriesnormalshapemediumseries\smallSh, normalshapemediumseriesnormalshapemediumseries\smallFl, normalshapemediumseriesnormalshapemediumseries\smallNa, normalshapemediumseriesnormalshapemediumseries\smalldSh, normalshapemediumseriesnormalshapemediumseries\smalldFl, normalshapemediumseriesnormalshapemediumseries\cSh, normalshapemediumseriesnormalshapemediumseries\cFl, normalshapemediumseriesnormalshapemediumseries\cNa, normalshapemediumseriesnormalshapemediumseries\cdSh and normalshapemediumseriesnormalshapemediumseries\cdFl) instead of the usual lower case accidental symbols. The symbol normalshapemediumseriesnormalshapemediumseries\Sh (resp. normalshapemediumseriesnormalshapemediumseries\bigSh and normalshapemediumseriesnormalshapemediumseries\smallSh) means that the corresponding pitch has to be raised by one half pitch with respect to its normal value according to the current signature. Thus normalshapemediumseries\Sh b means a B$\sharp$ if the signature is zero or positive, and a B$\natural$ if it is negative. The same logic applies for all accidentals having an upper case forelast letter.


Obviously, the computation is done after taking account of the value of the normalshapemediumseriesnormalshapemediumseries\transpose register.


The compact codes normalshapemediumseriesˆ, normalshapemediumseries_, normalshapemediumseries= are normally not affected by transposition and signatures, but their behaviour can be changed by saying normalshapemediumseriesnormalshapemediumseries\relativeaccidentals and reset by normalshapemediumseriesnormalshapemediumseries\absoluteaccidentals (the default situation).


Although relative accidental coding is an easy and safe way of coding transposable scores, care should be exercised in getting rid of the habit of saying normalshapemediumseries\na b to rise the pitch of a B when the tonality is F major (i.e. with normalshapemediumseries normalshapemediumseriesnormalshapemediumseries\signn=-1 or normalshapemediumseries normalshapemediumseriesnormalshapemediumseries\generalsignature{ -1} ). An example of sophisticated transposition is given in the score normalshapemediumseriessouvenir.tex (which normalshapemediumseries\ inputs normalshapemediumseriessouvenix.tex). It should be noted that relative accidental coding is compatible with cautionary accidental coding: in this case, one should code normalshapemediumseriesnormalshapemediumseries\cNa, normalshapemediumseriesnormalshapemediumseries\cSh, normalshapemediumseriesnormalshapemediumseries\cFl, normalshapemediumseriesnormalshapemediumseries\cdSh, normalshapemediumseriesnormalshapemediumseries\cdFl respectively.


Besides, the typical piano octave transposition 8 - - - - - can be obtained by coding:


normalshapemediumseriesnormalshapemediumseries\octfin p n


which puts the 8 and dotted line symbols at the pitch p (usually normalshapemediumseriesp to normalshapemediumseriesr). The length is n normalshapemediumseriesnormalshapemediumseries\noteskip. This obviously fit for short octaviation denotations. To transpose a whole line, use normalshapemediumseriesnormalshapemediumseries\octline p. Since normalshapemediumseriesnormalshapemediumseries\octfin terminates with a small hook down, to indicate clearly where octaviation stops, you may also like to use normalshapemediumseriesnormalshapemediumseries\octsup which behaves like normalshapemediumseriesnormalshapemediumseries\octfin without the final hook. All this supposes you have an idea of the actual line breaking of your score in that section, and this is admittedly difficult to handle when octave transposition is supposed to long a large number of lines. In that latter case, you can use the normalshapemediumseries\def normalshapemediumseriesnormalshapemediumseries\everystaff{ ...} to insert whatever code you like at each new line of score. This has been used to set octaviation in the score of the Toccata in F by Charles-Marie WIDOR2.9: at each bar (or virtual bar, namely normalshapemediumseriesnormalshapemediumseries\zbarre), the normalshapemediumseries\ everystaff procedure is updated to produce the convenient code, in case of the line breaking happening before the next definition.